﻿using SqlPerfomance.V2.DomainModel.Enums;
using SqlPerfomance.V2.Tests.Code;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace SqlPerfomance.V2.Tests
{
	public interface ISqlTestOperation
	{
		/// <summary>
		/// Выбор всего дерева целиком
		/// </summary>
		/// <returns>Времы выполнения операции</returns>
		TestResult TestSelectAll();

		/// <summary>
		/// Выбор пути к заданному узлу
		/// </summary>
		/// <returns>Времы выполнения операции</returns>
        TestResult TestSelectPathById();

		/// <summary>
		/// Выбор ветки заданного узла
		/// </summary>
		/// <returns>Времы выполнения операции</returns>
        TestResult TestSelectBranchById(int id);

		/// <summary>
		/// Поиск родителя заданного узла
		/// </summary>
		/// <returns>Времы выполнения операции</returns>
        TestResult TestSelectParentById();

		/// <summary>
		/// Поиск наследников заданного узла
		/// </summary>
		/// <returns>Времы выполнения операции</returns>
        TestResult TestSelectChildrenById();

		/// <summary>
		/// Добавление нового элемента в конец родительского узла (родительский узел - с идентификатором 2. То есть первый после корневого элемента)
		/// </summary>
		/// <returns>Времы выполнения операции</returns>
        TestResult TestAddNode();

		/// <summary>
		/// Перемещение узла (смена родителя)
		/// </summary>
		/// <returns>Времы выполнения операции</returns>
        TestResult TestMoveNode();

		/// <summary>
		/// Удаление узла (и всей ветки под ним)
		/// </summary>
		/// <returns>Времы выполнения операции</returns>
        TestResult TestDeleteNode();
	}
}
